package org.stvd.service.quartz;

import java.util.List;
import java.util.Map;

import org.stvd.common.utils.ServiceResult;
import org.stvd.core.dto.QueryResult;
import org.stvd.entities.quartz.QuartzJob;
import org.stvd.service.base.BaseService;

/**
 * @title QuartzJobService
 * @description 定时任务业务层接口类
 * @auther houzx
 * @date 2022年03月10日
 */
public interface QuartzJobService extends BaseService<QuartzJob> {
    /**
     * 查询定时任务集合
     * @param start 当前页
     * @param limit 每页显示条数
     * @param quartzJob 定时任务信息
     * @return 定时任务集合
     */
    QueryResult<QuartzJob> queryQuartzJobResult(int start, int limit, QuartzJob quartzJob);
    
    /**
     * 查询启用的任务列表
     * @return
     */
    List<QuartzJob> listEnabledQuartzJob();

    /**
     * 新增定时任务
     * @param quartzJob 定时任务信息
     * @return 新增结果
     */
    ServiceResult<Map<String, Object>> insertQuartzJob(QuartzJob quartzJob);

    /**
     * 更新定时任务
     * @param quartzJob 定时任务信息
     * @return 更新结果
     */
    ServiceResult<Map<String, Object>> updateQuartzJob(QuartzJob quartzJob);

    /**
     * 删除定时任务
     * @param jobId 定时任务ID
     * @return 删除结果
     */
    ServiceResult<Map<String, Object>> deleteQuartzJob(Long jobId);

    /**
     * 启动定时任务
     * @param jobId 定时任务ID
     * @return 启动结果
     */
    ServiceResult<Map<String, Object>> startQuartzJob(Long jobId);

    /**
     * 暂停定时任务
     * @param jobId 定时任务ID
     * @return 暂停结果
     */
    ServiceResult<Map<String, Object>> pauseQuartzJob(Long jobId);

    /**
     * 立即执行定时任务
     * @param jobId 定时任务ID
     * @return 执行结果
     */
    ServiceResult<Map<String, Object>> executeQuartzJob(Long jobId);
}
